package com.ruoyi.file.domain.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 初始化分片上传请求对象
 *
 * @author ruoyi
 */
@Data
@Schema(name = "InitMultipartRequest", description = "初始化分片上传请求对象")
public class InitMultipartRequest {

    /** 文件名 */
    @Schema(description = "文件名")
    @NotBlank(message = "文件名不能为空")
    @Size(max = 1000, message = "文件名长度不能超过1000个字符")
    private String fileName;

    /** 文件总大小 */
    @Schema(description = "文件总大小(字节)")
    @NotNull(message = "文件总大小不能为空")
    private Long fileSize;

    /** 文件类型 */
    @Schema(description = "文件类型")
    @Size(max = 100, message = "文件类型长度不能超过100个字符")
    private String fileType;

    /** 存储配置ID(可选，不传则使用默认配置) */
    @Schema(description = "存储配置ID")
    private Long configId;

    /** 文件目录路径(可选) */
    @Schema(description = "文件目录路径")
    @Size(max = 500, message = "文件目录路径长度不能超过500个字符")
    private String dirPath;

    /** 文件MD5（可选，用于校验） */
    @Schema(description = "文件MD5")
    @Size(max = 500, message = "文件MD5长度不能超过500个字符")
    private String fileMd5;

    /** 保存文件名(可选，不传则使用时间戳) */
    @Schema(description = "保存文件名")
    @Size(max = 255, message = "保存文件名长度不能超过255个字符")
    private String saveFileName;
}
